package pentago.engine;

import org.newdawn.slick.Color;

public class GameOptions {

    public static final byte HUMAN_PLAYER = 0;
    public static final byte COMPUTER_RANDOM = 1;
    public static final byte COMPUTER_ALPHA_BETA = 2;
    public static final byte COMPUTER_OTHER = 3;

    private byte firstPlayerMode = HUMAN_PLAYER;
    private byte secondPlayerMode = HUMAN_PLAYER;

    private byte firstPlayerDepth = 1;
    private byte secondPlayerDepth = 1;

    private Color firstPlayerColor = Color.white;
    private Color secondPlayerColor = Color.black;
    private Color plateColor = Color.red;

    private String firstPlayerName = "Player1";
    private String secondPlayerName = "Player2";

    private boolean displayMoves = true;

    private byte[][] gameBoard;

    private long maxRunTime = Long.MAX_VALUE;

    public GameOptions() {
    }

    public byte getFirstPlayerMode() {
	return firstPlayerMode;
    }

    public void setFirstPlayerMode(byte firstPlayerMode) {
	this.firstPlayerMode = firstPlayerMode;
    }

    public byte getSecondPlayerMode() {
	return secondPlayerMode;
    }

    public void setSecondPlayerMode(byte secondPlayerMode) {
	this.secondPlayerMode = secondPlayerMode;
    }

    public Color getFirstPlayerColor() {
	return firstPlayerColor;
    }

    public void setFirstPlayerColor(Color firstPlayerColor) {
	this.firstPlayerColor = firstPlayerColor;
    }

    public Color getSecondPlayerColor() {
	return secondPlayerColor;
    }

    public void setSecondPlayerColor(Color secondPlayerColor) {
	this.secondPlayerColor = secondPlayerColor;
    }

    public Color getPlateColor() {
	return plateColor;
    }

    public void setPlateColor(Color plateColor) {
	this.plateColor = plateColor;
    }

    public byte[][] getBoardState() {
	return gameBoard;
    }

    public void setGameBoard(byte[][] gameBoard) {
	this.gameBoard = gameBoard.clone();
    }

    public String getFirstPlayerName() {
	return firstPlayerName;
    }

    public void setFirstPlayerName(String firstPlayerName) {
	this.firstPlayerName = firstPlayerName;
    }

    public String getSecondPlayerName() {
	return secondPlayerName;
    }

    public void setSecondPlayerName(String secondPlayerName) {
	this.secondPlayerName = secondPlayerName;
    }

    public byte getFirstPlayerDepth() {
	return firstPlayerDepth;
    }

    public void setFirstPlayerDepth(byte firstPlayerDepth) {
	this.firstPlayerDepth = firstPlayerDepth;
    }

    public byte getSecondPlayerDepth() {
	return secondPlayerDepth;
    }

    public void setSecondPlayerDepth(byte secondPlayerDepth) {
	this.secondPlayerDepth = secondPlayerDepth;
    }

    public boolean isDisplayMoves() {
	return displayMoves;
    }

    public void setDisplayMoves(boolean displayMoves) {
	this.displayMoves = displayMoves;
    }

    public long getMaxRunTime() {
	return maxRunTime;
    }

    public void setMaxRunTime(long maxRunTime) {
	this.maxRunTime = maxRunTime;
    }
}
